//===========================================================
//					xv_obj
//
//	Объектная система
//===========================================================

#pragma once

#include "es_tps.h"

// Родительский класс объекта
class cObject
{
private:
	int x, y;	// Позиция
	int x1, y1;	// Позиция спрайта на текстуре
	int w, h; // Ширина и высота объекта
	string sprite;	// Спрайт

public:
	cObject()	//Конструктор
	{
		x = 0;	x1 = 0;	w = 0;
		y = 0;  y1 = 0; h = 0;
		sprite = "blank";
	}

	void SetPos(int nx, int ny);	void SetSprite(string nsprite);	// Установка значений
	void SetPos1(int nx1, int ny1);	void SetSize(int nw, int nh);
	int getX();	int getY();	string getSprite();	// Получение значений
	int getX1();	int getY1();	int getWidth();	int getHeight();
};

// Дочерний класс тайла
class cTile : public cObject
{
private:
	bool bPassable;	// Проходимость

public:
	cTile(int nx, int ny, string nsprite, bool nbPassable)	// Конструктор
	{
		SetPos(nx, ny);
		SetSprite(nsprite);
		SetPassable(nbPassable);
		SetSize(64, 64);
	}

	void SetPassable(bool bnPassable);	// Установка значений
	bool isPassable();	// Получение значений
};

// Дочерний класс существа
class cCreature : public cObject
{
private:
	string name;	// Имя

	float speed;	// Скорость

public:
	cCreature(int nx, int ny, string nsprite, string nname, float nspeed)	// Конструктор
	{
		SetPos(nx, ny);
		SetSprite(nsprite);
		SetName(nname);	SetSpeed(nspeed);
		SetSize(64, 64);
	}

	void SetName(string nname);	// Установка значений
	void SetSpeed(float nspeed);
	string getName();	// Получение значений
	float getSpeed();

	void Move(int nx, int ny);	// Движение существа
};

// Указатель на игрока
extern cCreature *Player;
